<?php namespace Admin\Controller;
//商品控制器
class GoodsController extends CommonController{
	protected $model;
	public function __auto(){
		$this->model=new \Common\Model\Goods;
	}
//	显示商品
	public function index(){
		$data=$this->model
		->join('brand','brand_bid','=','bid')
		->join('category','category_cid','=','cid')
		->join('type','goods.type_tid','=','type.tid')
		->get();
//		p($data);exit;
		
//		p($data);exit;
		View::with('data',$data);
		View::make();
	}
		
//	添加商品
	public function add(){
		if(IS_POST){
			if($this->model->store()){	
				View::success("添加成功",U('index'));
			}
				View::error($this->model->getError());
		}			
//			获得分类
			$category=new \Common\Model\Category;
			$category=$category->get();
			$category=Data::tree($category,'cname');
//			p($category);exit;
//			获得品牌
			$brand=new \Common\Model\Brand;
			$brand=$brand->get();
//			p($brand);exit;		
//			分配分类
		View::with('category',$category);
//			分配品牌
		View::with('brand',$brand);
//			显示模板
		View::make();
	}
//	编辑商品
	public function edit(){
	if(IS_POST){
		if($this->model->edit()){
			View::success('修改成功',U('index'));
		}
			View::error($this->model->getError());
	}		
//		一、获得旧数据
//		1.获得商品的旧数据
		$gid=Q('get.gid',0,'intval');
		$goodsModel=new \Common\Model\Goods;
		$olddata=$goodsModel
		->join('detail','gid','=','goods_gid')
		->where("goods_gid={$gid}")
		->find();
//		p($olddata);
		View::with('olddata',$olddata);
		
//		2.获得所属分类
		$categoryModel=new \Common\Model\Category;
		$cateData=$categoryModel->get();
		$cateData=Data::tree($cateData,'cname');
//		p($cateData);exit;
		View::with('cateData',$cateData);
		
//		3.获得所属品牌
		$brandModel=new \Common\Model\Brand;
		$brandData=$brandModel->get();
		View::with('brandData',$brandData);
		
		
//		二、处理商品属性和商品规格
//需要商品属性又需要类型属性，所以要关联这2张表
		$goodsAttModel=new \Common\Model\GoodsAtt;
		$attData=$goodsAttModel
					->join('typeattribute','typeattribute_tid','=','taid')
					->where("goods_gid={$gid}")
					->get();
//		p($attData);
//		创建一个空数组
		$taid=[];
		foreach($attData as $k=>$v){
			$attData[$k]['tvalue']=explode('|', $v['tvalue']);
//			把每个规格所对应的类型属性ID放进空数组 可以用来排除已经选过的类型属性
			$taid[]=$v['taid'];
		}			
//		p($taid);
//		p($attData);

		$typeattModel=new \Common\Model\TypeAtt;
		$taidStr=implode(',', $taid);
//		p($taidStr);
        $typeattData = $typeattModel->where("taid NOT IN ({$taidStr}) AND type_tid={$olddata['type_tid']}")->get();
		p($typeattData);
		foreach ($typeattData as $v){
            $attData[] = array(
                'gvalue' => '',
                'taname'=>$v['taname'],
                'tvalue'=>explode('|',$v['tvalue']),
                'choose'=>$v['choose'],
                'taid'=>$v['taid']
            );
        }
//		p($attData);
		View::with('attData',$attData);
		View::make();
	}


//	删除商品
	public function del(){
		$gid=Q('get.gid',0,'intval');
//		p($gid);exit;
//删除商品表数据
		$goodsModel=new \Common\Model\Goods;
		$goodsModel->where("gid={$gid}")->delete();
//	删除商品属性表数据	
		$goodsAttrModel=new \Common\Model\GoodsAtt;
		$goodsAttrModel->where("goods_gid={$gid}")->delete();
//	删除商品详情表数据
		$goodsdetailModel=new \Common\Model\Detail;
		$goodsdetailModel->where("goods_gid={$gid}")->delete();
		View::success('删除成功');
	}
	
 	public function getAttr(){
// 		获得选择分类后传来的tid
 		$tid=Q('post.tid',0,'intval');
//		p($tid);exit;
//			通过这个tid找到这个分类对应的类型属性
		$typeAttr=new \Common\Model\TypeAtt;
		$data=$typeAttr->where("type_tid={$tid}")->get();
//		p($data);exit;
//		循环类型属性值 把他们转化成数组 
		foreach($data as $k=>$v){
			$data[$k]['tvalue']=explode('|', $v['tvalue']);
		}
//		把PHP转化成json  返回给ajax
		echo json_encode($data);exit;
 	}
	
	public function upload(){
//		p(1);exit;
		$file=Upload::path('Upload/listimg/',date('y/m'))->make();
		if(empty($file)){
			$this->ajax(Upload::getError());
		}else{
//			把数据返回给异步
			$data=$file[0];
			$this->ajax($data);
		}
	}
	
	
	
}
